<?php

/**
 * По-умному форматирует дату.
 *
 * @param   string  $value
 * @return  string
 */
function smarty_modifier_smartdate($value) {
    $stamp = strtotime($value);
    switch (true) {
        // если дата — сегодня
        case smarty_modifier_smartdate_is($stamp, 'Ymd'):
            $format = 'h:i A';
            break;
        // если дата — в этом году
        case smarty_modifier_smartdate_is($stamp, 'Y'):
            $format = 'M, d';
            break;
        // если дата — в прошлом году
        default:
            $format = 'm/d/Y';
            break;
    }
    return date($format, $stamp);
}

/**
 * Определяет, попадает ли дата в интервал, определяемый указанным форматом.
 *
 * @param   integer $stamp
 * @param   string  $format
 * @return  boolean
 */
function smarty_modifier_smartdate_is($stamp, $format) {
    return date($format, $stamp) == date($format);
}
